package nrtech.br.com.angel.dao;

import android.database.sqlite.SQLiteDatabase;

import java.util.Map;

import de.greenrobot.dao.AbstractDao;
import de.greenrobot.dao.DaoConfig;
import de.greenrobot.dao.AbstractDaoSession;
import de.greenrobot.dao.IdentityScopeType;

import nrtech.br.com.angel.dao.Agencia;
import nrtech.br.com.angel.dao.Banco;
import nrtech.br.com.angel.dao.Cartao;
import nrtech.br.com.angel.dao.Config;
import nrtech.br.com.angel.dao.ContaBanco;
import nrtech.br.com.angel.dao.Cotacao;
import nrtech.br.com.angel.dao.Documento;
import nrtech.br.com.angel.dao.Fonte;
import nrtech.br.com.angel.dao.FontesFormasPagto;
import nrtech.br.com.angel.dao.FormaPagto;
import nrtech.br.com.angel.dao.GrupoLancto;
import nrtech.br.com.angel.dao.HistCartao;
import nrtech.br.com.angel.dao.Investimento;
import nrtech.br.com.angel.dao.Lancamento;
import nrtech.br.com.angel.dao.TipoLancamento;
import nrtech.br.com.angel.dao.TipoDocto;
import nrtech.br.com.angel.dao.Titulares;
import nrtech.br.com.angel.dao.Alarme;

import nrtech.br.com.angel.dao.AgenciaDao;
import nrtech.br.com.angel.dao.BancoDao;
import nrtech.br.com.angel.dao.CartaoDao;
import nrtech.br.com.angel.dao.ConfigDao;
import nrtech.br.com.angel.dao.ContaBancoDao;
import nrtech.br.com.angel.dao.CotacaoDao;
import nrtech.br.com.angel.dao.DocumentoDao;
import nrtech.br.com.angel.dao.FonteDao;
import nrtech.br.com.angel.dao.FontesFormasPagtoDao;
import nrtech.br.com.angel.dao.FormaPagtoDao;
import nrtech.br.com.angel.dao.GrupoLanctoDao;
import nrtech.br.com.angel.dao.HistCartaoDao;
import nrtech.br.com.angel.dao.InvestimentoDao;
import nrtech.br.com.angel.dao.LancamentoDao;
import nrtech.br.com.angel.dao.TipoLancamentoDao;
import nrtech.br.com.angel.dao.TipoDoctoDao;
import nrtech.br.com.angel.dao.TitularesDao;
import nrtech.br.com.angel.dao.AlarmeDao;

// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.

/**
 * {@inheritDoc}
 * 
 * @see de.greenrobot.dao.AbstractDaoSession
 */
public class DaoSession extends AbstractDaoSession {

    private final DaoConfig agenciaDaoConfig;
    private final DaoConfig bancoDaoConfig;
    private final DaoConfig cartaoDaoConfig;
    private final DaoConfig configDaoConfig;
    private final DaoConfig contaBancoDaoConfig;
    private final DaoConfig cotacaoDaoConfig;
    private final DaoConfig documentoDaoConfig;
    private final DaoConfig fonteDaoConfig;
    private final DaoConfig fontesFormasPagtoDaoConfig;
    private final DaoConfig formaPagtoDaoConfig;
    private final DaoConfig grupoLanctoDaoConfig;
    private final DaoConfig histCartaoDaoConfig;
    private final DaoConfig investimentoDaoConfig;
    private final DaoConfig lancamentoDaoConfig;
    private final DaoConfig tipoLancamentoDaoConfig;
    private final DaoConfig tipoDoctoDaoConfig;
    private final DaoConfig titularesDaoConfig;
    private final DaoConfig alarmeDaoConfig;

    private final AgenciaDao agenciaDao;
    private final BancoDao bancoDao;
    private final CartaoDao cartaoDao;
    private final ConfigDao configDao;
    private final ContaBancoDao contaBancoDao;
    private final CotacaoDao cotacaoDao;
    private final DocumentoDao documentoDao;
    private final FonteDao fonteDao;
    private final FontesFormasPagtoDao fontesFormasPagtoDao;
    private final FormaPagtoDao formaPagtoDao;
    private final GrupoLanctoDao grupoLanctoDao;
    private final HistCartaoDao histCartaoDao;
    private final InvestimentoDao investimentoDao;
    private final LancamentoDao lancamentoDao;
    private final TipoLancamentoDao tipoLancamentoDao;
    private final TipoDoctoDao tipoDoctoDao;
    private final TitularesDao titularesDao;
    private final AlarmeDao alarmeDao;

    public DaoSession(SQLiteDatabase db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
            daoConfigMap) {
        super(db);

        agenciaDaoConfig = daoConfigMap.get(AgenciaDao.class).clone();
        agenciaDaoConfig.initIdentityScope(type);

        bancoDaoConfig = daoConfigMap.get(BancoDao.class).clone();
        bancoDaoConfig.initIdentityScope(type);

        cartaoDaoConfig = daoConfigMap.get(CartaoDao.class).clone();
        cartaoDaoConfig.initIdentityScope(type);

        configDaoConfig = daoConfigMap.get(ConfigDao.class).clone();
        configDaoConfig.initIdentityScope(type);

        contaBancoDaoConfig = daoConfigMap.get(ContaBancoDao.class).clone();
        contaBancoDaoConfig.initIdentityScope(type);

        cotacaoDaoConfig = daoConfigMap.get(CotacaoDao.class).clone();
        cotacaoDaoConfig.initIdentityScope(type);

        documentoDaoConfig = daoConfigMap.get(DocumentoDao.class).clone();
        documentoDaoConfig.initIdentityScope(type);

        fonteDaoConfig = daoConfigMap.get(FonteDao.class).clone();
        fonteDaoConfig.initIdentityScope(type);

        fontesFormasPagtoDaoConfig = daoConfigMap.get(FontesFormasPagtoDao.class).clone();
        fontesFormasPagtoDaoConfig.initIdentityScope(type);

        formaPagtoDaoConfig = daoConfigMap.get(FormaPagtoDao.class).clone();
        formaPagtoDaoConfig.initIdentityScope(type);

        grupoLanctoDaoConfig = daoConfigMap.get(GrupoLanctoDao.class).clone();
        grupoLanctoDaoConfig.initIdentityScope(type);

        histCartaoDaoConfig = daoConfigMap.get(HistCartaoDao.class).clone();
        histCartaoDaoConfig.initIdentityScope(type);

        investimentoDaoConfig = daoConfigMap.get(InvestimentoDao.class).clone();
        investimentoDaoConfig.initIdentityScope(type);

        lancamentoDaoConfig = daoConfigMap.get(LancamentoDao.class).clone();
        lancamentoDaoConfig.initIdentityScope(type);

        tipoLancamentoDaoConfig = daoConfigMap.get(TipoLancamentoDao.class).clone();
        tipoLancamentoDaoConfig.initIdentityScope(type);

        tipoDoctoDaoConfig = daoConfigMap.get(TipoDoctoDao.class).clone();
        tipoDoctoDaoConfig.initIdentityScope(type);

        titularesDaoConfig = daoConfigMap.get(TitularesDao.class).clone();
        titularesDaoConfig.initIdentityScope(type);

        alarmeDaoConfig = daoConfigMap.get(AlarmeDao.class).clone();
        alarmeDaoConfig.initIdentityScope(type);

        agenciaDao = new AgenciaDao(agenciaDaoConfig, this);
        bancoDao = new BancoDao(bancoDaoConfig, this);
        cartaoDao = new CartaoDao(cartaoDaoConfig, this);
        configDao = new ConfigDao(configDaoConfig, this);
        contaBancoDao = new ContaBancoDao(contaBancoDaoConfig, this);
        cotacaoDao = new CotacaoDao(cotacaoDaoConfig, this);
        documentoDao = new DocumentoDao(documentoDaoConfig, this);
        fonteDao = new FonteDao(fonteDaoConfig, this);
        fontesFormasPagtoDao = new FontesFormasPagtoDao(fontesFormasPagtoDaoConfig, this);
        formaPagtoDao = new FormaPagtoDao(formaPagtoDaoConfig, this);
        grupoLanctoDao = new GrupoLanctoDao(grupoLanctoDaoConfig, this);
        histCartaoDao = new HistCartaoDao(histCartaoDaoConfig, this);
        investimentoDao = new InvestimentoDao(investimentoDaoConfig, this);
        lancamentoDao = new LancamentoDao(lancamentoDaoConfig, this);
        tipoLancamentoDao = new TipoLancamentoDao(tipoLancamentoDaoConfig, this);
        tipoDoctoDao = new TipoDoctoDao(tipoDoctoDaoConfig, this);
        titularesDao = new TitularesDao(titularesDaoConfig, this);
        alarmeDao = new AlarmeDao(alarmeDaoConfig, this);

        registerDao(Agencia.class, agenciaDao);
        registerDao(Banco.class, bancoDao);
        registerDao(Cartao.class, cartaoDao);
        registerDao(Config.class, configDao);
        registerDao(ContaBanco.class, contaBancoDao);
        registerDao(Cotacao.class, cotacaoDao);
        registerDao(Documento.class, documentoDao);
        registerDao(Fonte.class, fonteDao);
        registerDao(FontesFormasPagto.class, fontesFormasPagtoDao);
        registerDao(FormaPagto.class, formaPagtoDao);
        registerDao(GrupoLancto.class, grupoLanctoDao);
        registerDao(HistCartao.class, histCartaoDao);
        registerDao(Investimento.class, investimentoDao);
        registerDao(Lancamento.class, lancamentoDao);
        registerDao(TipoLancamento.class, tipoLancamentoDao);
        registerDao(TipoDocto.class, tipoDoctoDao);
        registerDao(Titulares.class, titularesDao);
        registerDao(Alarme.class, alarmeDao);
    }
    
    public void clear() {
        agenciaDaoConfig.getIdentityScope().clear();
        bancoDaoConfig.getIdentityScope().clear();
        cartaoDaoConfig.getIdentityScope().clear();
        configDaoConfig.getIdentityScope().clear();
        contaBancoDaoConfig.getIdentityScope().clear();
        cotacaoDaoConfig.getIdentityScope().clear();
        documentoDaoConfig.getIdentityScope().clear();
        fonteDaoConfig.getIdentityScope().clear();
        fontesFormasPagtoDaoConfig.getIdentityScope().clear();
        formaPagtoDaoConfig.getIdentityScope().clear();
        grupoLanctoDaoConfig.getIdentityScope().clear();
        histCartaoDaoConfig.getIdentityScope().clear();
        investimentoDaoConfig.getIdentityScope().clear();
        lancamentoDaoConfig.getIdentityScope().clear();
        tipoLancamentoDaoConfig.getIdentityScope().clear();
        tipoDoctoDaoConfig.getIdentityScope().clear();
        titularesDaoConfig.getIdentityScope().clear();
        alarmeDaoConfig.getIdentityScope().clear();
    }

    public AgenciaDao getAgenciaDao() {
        return agenciaDao;
    }

    public BancoDao getBancoDao() {
        return bancoDao;
    }

    public CartaoDao getCartaoDao() {
        return cartaoDao;
    }

    public ConfigDao getConfigDao() {
        return configDao;
    }

    public ContaBancoDao getContaBancoDao() {
        return contaBancoDao;
    }

    public CotacaoDao getCotacaoDao() {
        return cotacaoDao;
    }

    public DocumentoDao getDocumentoDao() {
        return documentoDao;
    }

    public FonteDao getFonteDao() {
        return fonteDao;
    }

    public FontesFormasPagtoDao getFontesFormasPagtoDao() {
        return fontesFormasPagtoDao;
    }

    public FormaPagtoDao getFormaPagtoDao() {
        return formaPagtoDao;
    }

    public GrupoLanctoDao getGrupoLanctoDao() {
        return grupoLanctoDao;
    }

    public HistCartaoDao getHistCartaoDao() {
        return histCartaoDao;
    }

    public InvestimentoDao getInvestimentoDao() {
        return investimentoDao;
    }

    public LancamentoDao getLancamentoDao() {
        return lancamentoDao;
    }

    public TipoLancamentoDao getTipoLancamentoDao() {
        return tipoLancamentoDao;
    }

    public TipoDoctoDao getTipoDoctoDao() {
        return tipoDoctoDao;
    }

    public TitularesDao getTitularesDao() {
        return titularesDao;
    }

    public AlarmeDao getAlarmeDao() {
        return alarmeDao;
    }

}
